package cn.hss.io.buffered;

import java.io.*;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

/***将乱序的出师表文件拷贝到另一个文件，并恢复顺序
 * 实现思路分析：
 *
 * 1、定义一个缓冲字符输入流管道与源文件接通
 * 2、定义一个List集合存储读取的每行数据
 * 3、定义一个循环按照行读取数据，存入到List集合中
 * 4、对List集合中的每行数据按照首字符编号升序排序
 * 5、定义一个缓冲字符输出流管道与目标文件接通
 * 6、遍历List集合中的每个元素，用缓冲字符输出流管道写出并换行
 * @author 作者：HeShaoShuai
 * @Email 邮箱：2569819541@qq.com
 * @Date 日期：2023/4/26 14:10
 * @Package 包名：cn.hss.io.buffered
 * @Project 项目名：JavaSE
 * @Version 1.0
 */
public class TextSortCopy {
	public static void main(String[] args) {
		//1.定义一个缓冲字符输入流管道与源文件接通
		try {
			BufferedReader br = new BufferedReader(
					new FileReader(
							"D:\\BaiduNetdiskDownload\\Java实训相关文件\\出师表.txt"));
			//5.定义一个缓冲字符输出流管道与目标文件接通
			BufferedWriter bw = new BufferedWriter(
					new FileWriter(
					"D:\\BaiduNetdiskDownload\\Java实训相关文件\\copy_出师表.txt"));
			//2.定义一个List集合存储读取的每一行数据
			List<String> dataList = new ArrayList<>();
			//3.定义一个循环按照行读取数据，存入到List集合中
			String line;//记录每行读取数据
			while ((line=br.readLine())!=null){
				//将读取到的数据存入到list集合中
				dataList.add(line);
			}
			//4.对List集合中的每行数据按照首字符编号升序排序
			Collections.sort(dataList);
			//6.遍历List集合中的每一行元素，用缓冲字符输出流管道
			for (String dataCher:dataList){
				//用缓冲输出流写出数据换行
				bw.write(dataCher);
				bw.newLine();
				bw.flush();//强行行刷新
			}
			System.out.println("复制完毕");
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e){
			e.printStackTrace();
		}
	}
}
